/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pkg1ifxArchivos;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Calendar;
import java.util.SimpleTimeZone;
import java.util.TimeZone;

/**
 *
 * @author strailaparicio
 */
public class cifxLogs {
    private String sdestino="ifxlog.log";
    private boolean bSalconsola=true;
    private boolean bSallog=true;
    private String susuario="ifx@ifxV13";
    private boolean bsalidaTXT=false;
    private javax.swing.JTextArea txtMensajes;
    private String sENTER= System.getProperty("line.separator");
    
    
    public cifxLogs()
    {
        
    }
    public cifxLogs(String spathlog)
    {
        if(spathlog.length()>0)
            sdestino=spathlog;
    }
    public void setTXT(javax.swing.JTextArea txt)
    {
        txtMensajes=txt;
    }
    public void setSalidaPorTXT(boolean dato)
    {
        bsalidaTXT=dato;
    }
    public void setUsuario(String dato)
    {
        susuario=dato;
    }
    public String getUsuario()
    {
        return susuario;
    }
    public void setPathArchivoLog(String sdato)
    {
        sdestino=sdato;
    }
    public void setSalConsola(boolean bdato)
    {
        bSalconsola=bdato;
    }
    public void setSalLog(boolean bdato)
    {
        bSallog=bdato;
    }
    public boolean getSalConsola()
    {
        return bSalconsola;
    }
    public boolean getSalLog()
    {
        return bSallog;
    }
    /**
     * Funcion pata enviar mensage al log y la consola
     * la funcion internamente escribe la fecha y hora del mensaje
     * dd.mm.yyy hh:mm:ss mensaje
     * @param smensaje , Mensaje a enviar
     */
    public void outMensaje(String smensaje)
    {
        
        try
        {
            TimeZone tz = TimeZone.getTimeZone("America/Bogota");
            Calendar calendario = Calendar.getInstance();
            calendario.setTimeZone(tz);
            String sfecha = susuario +" "+ 
                calendario.get(Calendar.DAY_OF_MONTH)+"."+(calendario.get(Calendar.MONTH)+1)+"."+
                calendario.get(Calendar.YEAR) +" "+
                calendario.get(Calendar.HOUR)+":" + 
                calendario.get(Calendar.MINUTE)+":"+ 
                calendario.get(Calendar.SECOND)+" ";
            if(bSalconsola)
                System.out.println(sfecha+smensaje);
            if(bSallog)
            {
                File fstream = new File(sdestino);
                //FileWriter fstream = new FileWriter(snombre+sfecha+".log",true);
                OutputStream out = new FileOutputStream(fstream,true);  
                byte[] bdatos = (sfecha+smensaje+sENTER).getBytes();
                out.write(bdatos);
                out.close();
            }
            if(bsalidaTXT)
            {
                if(txtMensajes.getLineCount()>=600)
                    txtMensajes.setText("..."+sENTER);
                
                txtMensajes.append(sfecha+smensaje+sENTER);
                txtMensajes.setSelectionStart(txtMensajes.getText().length());
                txtMensajes.setSelectionEnd(txtMensajes.getText().length());
            }
            
        }catch(Exception err)
        {
            System.err.println("Error IO en cifxLogs.outMensaje: "+ err.getMessage());
            
        }
        
    }
    
    
}
